package fr.upstlse.glre.client.administration.actualite.action;

import java.util.Date;

import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.widget.Info;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.google.gwt.user.client.rpc.AsyncCallback;

import fr.upstlse.glre.client.administration.EspaceAdministration;
import fr.upstlse.glre.client.administration.actualite.CreationActualitePanel;
import fr.upstlse.glre.client.utilitaires.ControlerUtil;
import fr.upstlse.glre.client.vo.actualite.ActualiteVOGWT;
import fr.upstlse.glre.client.vo.user.UserVOGWT;

public class CreationActualiteAction extends SelectionListener<ComponentEvent> {

	@Override
	public void componentSelected(ComponentEvent pCe) {
		String lTitre = CreationActualitePanel.getInstance()
				.getActualiteFields().getTitre().getValue();
		String lContenu = CreationActualitePanel.getInstance()
		.getActualiteFields().getContenu().getValue();
		Date lDate = new Date();
		long lUserId = EspaceAdministration.getInstance().getUser().getId();
		UserVOGWT lUserVOGWT = new UserVOGWT();
		lUserVOGWT.setId(lUserId);

		ActualiteVOGWT lActualiteVOGWT = new ActualiteVOGWT();
		lActualiteVOGWT.setTitre(lTitre);
		lActualiteVOGWT.setContenu(lContenu);
		lActualiteVOGWT.setDate(lDate);
		lActualiteVOGWT.setUserVOGWT(lUserVOGWT);

		final MessageBox lWaitMessageBox = MessageBox.progress("Information",
				"Création du actualité", "création en cours...");
		AsyncCallback<Long> lAsyncCallback = new AsyncCallback<Long>() {

			public void onFailure(Throwable pCaught) {
				lWaitMessageBox.hide();
				MessageBox.alert("Erreur createActualite ", pCaught.getMessage(),
						null);
			}

			public void onSuccess(Long pResult) {
				lWaitMessageBox.hide();

				long lId = pResult.longValue();
				if (lId > 0) {
					Info.display("Information", "Actualité créée avec succès", "");
				} else {
					MessageBox.alert("Erreur", "L'actualité existe déjà", null);
				}
			}
		};
		ControlerUtil.getControlerServiceAsyncInstance().createActualite(lActualiteVOGWT, lAsyncCallback);
	}

}
